Discard the completion store when we change the folder
authorFederico Mena Quintero <federico@gnu.org>
Thu, 13 Mar 2008 00:35:31 +0000 (00:35 +0000)
committerFederico Mena Quintero <federico@src.gnome.org>
Thu, 13 Mar 2008 00:35:31 +0000 (00:35 +0000)
Signed-off-by: Federico Mena Quintero <federico@gnu.org>
svn path=/trunk/; revision=19820

gtk/gtkfilechooserentry.c

index 8d6fce3b915efd2da4cb4d88300906122b739d96..4cc5853419689328e244a243b801b0f1201ed654 100644 (file)
@@ -727,6 +727,17 @@ gtk_file_chooser_entry_activate (GtkEntry *entry)
   GTK_ENTRY_CLASS (_gtk_file_chooser_entry_parent_class)->activate (entry);
 }
 
+static void
+discard_completion_store (GtkFileChooserEntry *chooser_entry)
+{
+  if (!chooser_entry->completion_store)
+    return;
+
+  gtk_entry_completion_set_model (gtk_entry_get_completion (GTK_ENTRY (chooser_entry)), NULL);
+  g_object_unref (chooser_entry->completion_store);
+  chooser_entry->completion_store = NULL;
+}
+
 /* Fills the completion store from the contents of the current folder */
 static void
 populate_completion_store (GtkFileChooserEntry *chooser_entry)
@@ -737,11 +748,7 @@ populate_completion_store (GtkFileChooserEntry *chooser_entry)
   if (!gtk_file_folder_list_children (chooser_entry->current_folder, &paths, NULL)) /* NULL-GError */
     return;
 
-  if (chooser_entry->completion_store)
-    {
-      gtk_entry_completion_set_model (gtk_entry_get_completion (GTK_ENTRY (chooser_entry)), NULL);
-      g_object_unref (chooser_entry->completion_store);
-    }
+  discard_completion_store (chooser_entry);
 
   chooser_entry->completion_store = gtk_list_store_new (N_COLUMNS,
                                                        G_TYPE_STRING,
@@ -849,6 +856,8 @@ load_directory_get_folder_callback (GtkFileSystemHandle *handle,
   g_assert (folder != NULL);
   chooser_entry->current_folder = folder;
 
+  discard_completion_store (chooser_entry);
+
   if (gtk_file_folder_is_finished_loading (chooser_entry->current_folder))
     finish_folder_load (chooser_entry);
   else